package com.ardf.mapper;

import com.ardf.entity.Result;
import com.ardf.entity.dto.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author ShiYunHao
 * @since 2025-01-06
 */
public interface ResultMapper extends BaseMapper<Result> {
    /**
     * 分页查询个人赛成绩信息
     */
    Page<GradeInfoPersonTableDto> searchInfoPersonAll(Page<GradeInfoPersonTableDto> page,
                                                      @Param("projectId") Long projectId,
                                                      @Param("groupId") Long groupId,
                                                      @Param("searchAll") String searchAll);

    /**
     * 分页查询个人赛结果
     */
    Page<GradeResultPersonTableDto> searchResultPersonAll(Page<GradeResultPersonTableDto> page,
                                                          @Param("searchAll") String searchAll,
                                                          @Param("projectId") Long projectId,
                                                          @Param("groupId") Long groupId,
                                                          @RequestParam("algorithmId") Long algorithmId);

    /**
     * 下载表格
     */
    List<DownloadResultRelayTableDto> getRelayAll(@Param("algorithmId") Long algorithmId, @Param("projectId") Long projectId,
                                                  @Param("groupId") Long groupId);

    /**
     * 下载表格
     */
    List<DownloadResultPersonTableDto> getPersonAll(@Param("algorithmId") Long algorithmId, @Param("projectId") Long projectId,
                                                    @Param("groupId") Long groupId);

    /**
     * 分页查询接力赛成绩信息
     */
    Page<GradeInfoRelayTableDto> searchInfoRelayAll(Page<GradeInfoRelayTableDto> page,
                                                    @Param("projectId") Long projectId,
                                                    @Param("groupId") Long groupId,
                                                    @Param("searchAll") String searchAll);

    List<ResultTeamDto> getResultTeamDtoList(@Param("teamId") Long teamId);

    Page<GradeResultRelayTableDto> searchResultRelayAll(Page<GradeResultRelayTableDto> page,
                                                        @Param("searchAll") String searchAll,
                                                        @Param("projectId") Long projectId,
                                                        @Param("groupId") Long groupId,
                                                        @RequestParam("algorithmId") Long algorithmId);
}
